SCGCHECK(1)           Schily's USER COMMANDS          SCGCHECK(1)



NNAAMMEE
       scgcheck - check and validate the ABI of libscg

SSYYNNOOPPSSIISS
       ssccggcchheecckk [ _o_p_t_i_o_n_s ]


DDEESSCCRRIIPPTTIIOONN
       SSccggcchheecckk  is  used  to  check  and  verify the Application
       Binary Interface of libscg.


       The _d_e_v_i_c_e refers to _s_c_s_i_b_u_s/_t_a_r_g_e_t/_l_u_n of the drive. Com-
       munication  on  _S_u_n_O_S is done with the SCSI general driver
       ssccgg..  Other operating systems are using a library  simula-
       tion  of  this  driver.   Possible  syntax  is: ddeevv== _s_c_s_i_-
       _b_u_s,_t_a_r_g_e_t,_l_u_n or ddeevv== _t_a_r_g_e_t,_l_u_n.  In  the  latter  case,
       the  drive  has to be connected to the default SCSI bus of
       the machine.  _S_c_s_i_b_u_s, _t_a_r_g_e_t and _l_u_n are integer numbers.
       Some  operating  systems or SCSI transport implementations
       may require to specify a filename in  addition.   In  this
       case  the  correct  syntax for the device is: ddeevv== _d_e_v_i_c_e_-
       _n_a_m_e:_s_c_s_i_b_u_s,_t_a_r_g_e_t,_l_u_n or ddeevv== _d_e_v_i_c_e_n_a_m_e:_t_a_r_g_e_t,_l_u_n.  If
       the  name  of  the  device node that has been specified on
       such a system refers to exactly one SCSI device, a  short-
       hand  in  the  form  ddeevv==  _d_e_v_i_c_e_n_a_m_e:_@  or  ddeevv==  _d_e_v_i_c_e_-
       _n_a_m_e:_@,_l_u_n may be used instead  of  ddeevv==  _d_e_v_i_c_e_n_a_m_e:_s_c_s_i_-
       _b_u_s,_t_a_r_g_e_t,_l_u_n.


       To  access  remote  SCSI  devices, you need to prepend the
       SCSI device name by a remote device indicator. The  remote
       device   indicator   is   either   RREEMMOOTTEE::_u_s_e_r_@_h_o_s_t_:  or
       RREEMMOOTTEE::_h_o_s_t_:
       A valid remote SCSI device name may be:  RREEMMOOTTEE::_u_s_e_r_@_h_o_s_t_:
       to     allow     remote     SCSI     bus    scanning    or
       RREEMMOOTTEE::_u_s_e_r_@_h_o_s_t_:_1_,_0_,_0 to access the SCSI device  at  _h_o_s_t
       connected to SCSI bus # 1,target 0 lun 0.


       To  make rreeaaddccdd portable to all UNIX platforms, the syntax
       ddeevv==  _d_e_v_i_c_e_n_a_m_e:_s_c_s_i_b_u_s,_t_a_r_g_e_t,_l_u_n  is  preferred  as  is
       hides  OS  specific  knowledge about device names from the
       user.  A specific OS must not necessarily support a way to
       specify a real device file name nor a way to specify _s_c_s_i_-
       _b_u_s,_t_a_r_g_e_t,_l_u_n.


       _S_c_s_i_b_u_s 0 is the default SCSI bus on  the  machine.  Watch
       the  boot  messages  for  more  information  or  look into
       //vvaarr//aaddmm//mmeessssaaggeess for more information about the SCSI con-
       figuration  of your machine.  If you have problems to fig-
       ure out what values for _s_c_s_i_b_u_s,_t_a_r_g_e_t,_l_u_n should be used,
       try the --ssccaannbbuuss option of ccddrreeccoorrdd.


OOPPTTIIOONNSS
       --vveerrssiioonn
              Print version information and exit.

       ddeevv==_t_a_r_g_e_t
              Sets  the SCSI target default for SCSI Bus scanning
              test, see notes above.  This allows e.g. to specify
              to  use  Solaris  USCSI  or remote SCSI for the bus
              scanning case.

              For the non bus scanning  case,  a  typical  device
              specification  is  ddeevv==_6_,_0 .  If a filename must be
              provided together with the numerical target  speci-
              fication,  the filename is implementation specific.
              The correct filename in this case can be  found  in
              the system specific manuals of the target operating
              system.  On a _F_r_e_e_B_S_D system without  _C_A_M  support,
              you   need   to   use   the  control  device  (e.g.
              _/_d_e_v_/_r_c_d_0_._c_t_l).  A correct device specification  in
              this case may be ddeevv==_/_d_e_v_/_r_c_d_0_._c_t_l_:_@ .

              On  Linux,  drives  connected  to  a  parallel port
              adapter are mapped to a virtual SCSI bus. Different
              adapters  are  mapped  to different targets on this
              virtual SCSI bus.

              If no _d_e_v option is present, ccddrreeccoorrdd will  try  to
              get the device from the CCDDRR__DDEEVVIICCEE environment.

              If the argument to the ddeevv== option does not contain
              the characters ',', '/', '@' or ':', it  is  inter-
              preted  as  an  label name that may be found in the
              file /etc/default/cdrecord (see FILES section).

       ttiimmeeoouutt==_#
              Set the default SCSI command  timeout  value  to  _#
              seconds.   The  default SCSI command timeout is the
              minimum timeout used for sending SCSI commands.  If
              a  SCSI command fails due to a timeout, you may try
              to raise the default SCSI command timeout above the
              timeout  value  of the failed command.  If the com-
              mand runs correctly with a raised command  timeout,
              please report the better timeout value and the cor-
              responding command to the author  of  the  program.
              If  no _t_i_m_e_o_u_t option is present, a default timeout
              of 40 seconds is used.

       ddeebbuugg==_#_, --dd
              Set the misc debug value to  #  (with  debug=#)  or
              increment the misc debug level by one (with -d). If
              you specify _-_d_d_, this equals to ddeebbuugg==_2_.  This  may
              help  to  find  problems while opening a driver for
              libscg.  as well as with sector  sizes  and  sector
              types.  Using --ddeebbuugg slows down the process and may
              be the reason for a buffer underrun.

       kkddeebbuugg==#, kkdd==#
              Tell the ssccgg-driver  to  modify  the  kernel  debug
              value while SCSI commands are running.

       --ssiilleenntt, --ss
              Do  not  print  out a status report for failed SCSI
              commands.

       --vv     Increment the level of general  verbosity  by  one.
              This  is  used  e.g. to display the progress of the
              process.

       --VV     Increment the verbose level with  respect  of  SCSI
              command  transport  by  one.   This  helps to debug
              problems during the process, that occur in the  CD-
              Recorder.    If   you  get  incomprehensible  error
              messages you should  use  this  flag  to  get  more
              detailed output.  --VVVV will show data buffer content
              in addition.  Using --VV or --VVVV slows down  the  pro-
              cess.

       ff==_f_i_l_e Specify   the  log  file  to  be  used  instead  of
              _c_h_e_c_k_._l_o_g.


EEXXAAMMPPLLEESS
FFIILLEESS
SSEEEE AALLSSOO
       ccddrreeccoorrdd(1), rreeaaddccdd(1), mmkkiissooffss(1), ssccgg(7).


NNOOTTEESS
       When using ssccggcckkeecckk with the  broken  LLiinnuuxx  SSCCSSII  ggeenneerriicc
       ddrriivveerr..   You  should note that ssccggcchheecckk uses a hack, that
       tries to emulate the  functionality  of  the  scg  driver.
       Unfortunately,  the  sg driver on LLiinnuuxx has several severe
       bugs:

       +o      It cannot see if a SCSI command could not  be  sent
              at all.

       +o      It  cannot  get the SCSI status byte.  SSccggcchheecckk for
              that reason cannot report failing SCSI commands  in
              some situations.

       +o      It cannot get real DMA count of transfer.  SSccggcchheecckk
              cannot tell you if there is an DMA residual  count.

       +o      It  cannot  get number of bytes valid in auto sense
              data.  SSccggcchheecckk cannot tell you if device transfers
              no sense data at all.

       +o      It  fetches  to  few  data  in  auto  request sense
              (CCS/SCSI-2/SCSI-3 needs >= 18).


DDIIAAGGNNOOSSTTIICCSS
       A typical error message for a SCSI command looks like:

              readcd: I/O error. test unit ready: scsi sendcmd: no error
              CDB:  00 20 00 00 00 00
              status: 0x2 (CHECK CONDITION)
              Sense Bytes: 70 00 05 00 00 00 00 0A 00 00 00 00 25 00 00 00 00 00
              Sense Key: 0x5 Illegal Request, Segment 0
              Sense Code: 0x25 Qual 0x00 (logical unit not supported) Fru 0x0
              Sense flags: Blk 0 (not valid)
              cmd finished after 0.002s timeout 40s

       The first line gives information about  the  transport  of
       the  command.   The  text  after the first colon gives the
       error text for the system call from the view of  the  ker-
       nel.  It  usually is: II//OO eerrrroorr unless other problems hap-
       pen. The next words contain a short  description  for  the
       SCSI command that fails. The rest of the line tells you if
       there were any problems for the transport of  the  command
       over the SCSI bus.  ffaattaall eerrrroorr means that it was not pos-
       sible to transport the command (i.e. no device present  at
       the requested SCSI address).

       The  second  line prints the SCSI command descriptor block
       for the failed command.

       The third line gives information on the SCSI  status  code
       returned  by  the command, if the transport of the command
       succeeds.  This is error information from the SCSI device.

       The  fourth  line  is a hex dump of the auto request sense
       information for the command.

       The fifth line is the error text  for  the  sense  key  if
       available,  followed  by  the  segment number that is only
       valid if the command was a _c_o_p_y command. If the error mes-
       sage  is  not directly related to the current command, the
       text _d_e_f_e_r_r_e_d _e_r_r_o_r is appended.

       The sixth line is the error text for the  sense  code  and
       the  sense  qualifier  if  available.   If the type of the
       device is known, the sense data is decoded from tables  in
       _s_c_s_i_e_r_r_s_._c  .  The text is followed by the error value for
       a field replaceable unit.

       The seventh line prints the block number that  is  related
       to  the  failed  command and text for several error flags.
       The block number may not be valid.

       The eight line reports the timeout set up for this command
       and the time that the command realy needed to complete.


BBUUGGSS
CCRREEDDIITTSS
MMAAIILLIINNGG LLIISSTTSS
AAUUTTHHOORR
       Joerg Schilling
       Seestr. 110
       D-13353 Berlin
       Germany

       Additional information can be found on:
       http://www.fokus.fhg.de/usr/schilling/cdrecord.html

       If you have support questions, send them to:

       ccddrreeccoorrdd--ssuuppppoorrtt@@bbeerrlliiooss..ddee
       or ootthheerr--ccddwwrriittee@@lliissttss..ddeebbiiaann..oorrgg

       Of you have definitely found a bug, send a mail to:

       ccddrreeccoorrdd--ddeevveellooppeerrss@@bbeerrlliiooss..ddee
       or sscchhiilllliinngg@@ffookkuuss..ffhhgg..ddee

       To subscribe, use:

       hhttttpp::////lliissttss..bbeerrlliiooss..ddee//mmaaiillmmaann//lliissttiinnffoo//ccddrreeccoorrdd--ddeevveelloopp--
       eerrss
       or  hhttttpp::////lliissttss..bbeerrlliiooss..ddee//mmaaiillmmaann//lliissttiinnffoo//ccddrreeccoorrdd--ssuupp--
       ppoorrtt



Joerg Schilling            Version 2.0                SCGCHECK(1)
